{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    },
    "pycharm": {
     "name": "#%% md\n"
    }
   },
   "source": [
    "## 什么是加性模型(additive model)?\n",
    "\n",
    "就是将几个分类函数加权相加的模型。\n",
    "$$\n",
    "H(\\boldsymbol{x})=\\sum_{t=1}^T \\alpha_t h_t(\\boldsymbol{x})\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.datasets import make_moons, make_circles, make_classification\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import accuracy_score, classification_report, f1_score\n",
    "import matplotlib.colors as colors\n",
    "from matplotlib.colors import LinearSegmentedColormap\n",
    "from matplotlib.gridspec import GridSpec\n",
    "import seaborn as sns\n",
    "from sklearn.ensemble import AdaBoostClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "random_state=42"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false,
    "jupyter": {
     "outputs_hidden": false
    },
    "pycharm": {
     "name": "#%%\n"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x200ca3119d0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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gcQUdPLy8pSXl+dWWc5w6NAhHT16VIWFhQk7JgAAMIdr8+gcOHBAzc3NOnDggHp6etTc3Kzm5mYdP348tE1ZWZleeuklSdLx48e1dOlS/elPf9K+ffvU0NCg66+/XiUlJaqsrIz6uJmZmVqxYgXD0h3AuXQO59IZnEfncC6dw7l0hlvn0bXOyFVVVXrqqafOeHzLli2aNWuWfXCfT3V1daqqqtKXX36puXPnateuXero6NCoUaP0wx/+UA899JDy8/PdKCIAADCc66OuAAAAkoW1rgAAgLEIOgAAwFgEHQAAYCyCDgAAMJYRQefhhx/W9OnTlZ2dHfW00VVVVfL5fP1us2fPdregKSCec2lZlpYvX67CwkKdc845qqioUDAYdLegHnfs2DHdeuutysnJ0fDhwxUIBPpNrRDOrFmzznhP3nHHHQkqsXesXbtWxcXFysrK0rRp07R9+/aI2//+979XWVmZsrKyNH78eL3yyisJKqn3xXIu6+vrz3j/ZWVlJbC03rRt2zZdd911GjVqlHw+nzZt2nTWfbZu3arJkycrMzNTJSUlMS9ubapYz+XWrVvPeE/6fD61tbXFdFwjgs7Jkyd1ww036M4774xpv9mzZ+vw4cOh23PPPedSCVNHPOdy1apVevzxx7Vu3To1NTXpW9/6liorK/XVV1+5WFJvu/XWW/XBBx/o9ddf1x/+8Adt27ZNt99++1n3W7RoUb/35KpVqxJQWu944YUXtGTJEq1YsUI7d+7UxIkTVVlZqU8++STs9u+8847mzZunQCCgXbt2ae7cuZo7d67ef//9BJfce2I9l5K9hMGp77/9+/cnsMTedOLECU2cOFFr166Navu9e/fq2muv1VVXXaXm5mYtXrxYCxcu1GuvveZySb0v1nPZp6Wlpd/7cuTIkbEd2DJIXV2dlZubG9W2CxYssK6//npXy5PKoj2Xvb29VkFBgbV69erQYx0dHVZmZqb13HPPuVhC7/rwww8tSdaf//zn0GOvvvqq5fP5rI8//njA/WbOnGndfffdCSihd02dOtX6l3/5l9DPPT091qhRo6za2tqw2994443Wtdde2++xadOmWT/5yU9cLWcqiPVcxvL5ma4kWS+99FLEbe677z7r0ksv7ffYTTfdZFVWVrpYstQTzbncsmWLJcn67LPPBnUsI2p04rV161aNHDlS48aN05133qmjR48mu0gpZ+/evWpra1NFRUXosdzcXE2bNk2NjY1JLFnyNDY2avjw4briiitCj1VUVMjv96upqSnivs8++6xGjBihyy67TDU1Nfriiy/cLq5nnDx5Ujt27Oj3XvL7/aqoqBjwvdTY2Nhve0mqrKxM2/den3jOpWTPUH/hhReqqKhI119/vT744INEFNcovCedN2nSJBUWFurv//7v9fbbb8e8f0xrXZlk9uzZ+sd//EeNGTNGe/bs0f333685c+aosbFRGRkZyS5eyuhrKz199ur8/PyY21FN0dbWdkbV6pAhQ3TeeedFPCe33HKLLrzwQo0aNUp/+ctf9NOf/lQtLS168cUX3S6yJ3z66afq6ekJ+1766KOPwu7T1tbGey+MeM7luHHjtGHDBk2YMEGdnZ169NFHNX36dH3wwQe64IILElFsIwz0nuzq6tKXX36pc845J0klSz2FhYVat26drrjiCnV3d+vJJ5/UrFmz1NTUpMmTJ0f9PJ4NOsuWLdMjjzwScZvdu3errKwsrue/+eabQ/8eP368JkyYoIsuukhbt241bqV0t89luoj2PMbr1D4848ePV2Fhoa6++mrt2bNHF110UdzPC0SjvLxc5eXloZ+nT5+uiy++WE888YQeeuihJJYM6WrcuHEaN25c6Ofp06drz549+tWvfqVnnnkm6ufxbNC59957VVVVFXGbsWPHOna8sWPHasSIEWptbTUu6Lh5LgsKCiRJ7e3t/VaZb29v16RJk+J6Tq+K9jwWFBSc0eHzb3/7m44dOxY6X9GYNm2aJKm1tTUtgs6IESOUkZGh9vb2fo+3t7cPeN4KCgpi2j5dxHMuTzd06FBdfvnlam1tdaOIxhroPZmTk0NtjgOmTp2qt956K6Z9PBt08vLylJeXl7DjHTp0SEePHu13sTaFm+dyzJgxKigoUENDQyjYdHV1qampKeZRcF4X7XksLy9XR0eHduzYoSlTpkiS3nzzTfX29obCSzSam5slycj3ZDjDhg3TlClT1NDQoLlz50qSent71dDQoLvuuivsPuXl5WpoaNDixYtDj73++uv9aibSUTzn8nQ9PT167733dM0117hYUvOUl5efMcUB70nnNDc3x/6ZOKiuzB6xf/9+a9euXdbKlSutc88919q1a5e1a9cu6/PPPw9tM27cOOvFF1+0LMuyPv/8c+vf/u3frMbGRmvv3r3WG2+8YU2ePNkqLS21vvrqq2T9GZ4Q67m0LMv65S9/aQ0fPtx6+eWXrb/85S/W9ddfb40ZM8b68ssvk/EneMLs2bOtyy+/3GpqarLeeustq7S01Jo3b17o94cOHbLGjRtnNTU1WZZlWa2trdbPfvYz691337X27t1rvfzyy9bYsWOtK6+8Mll/QlI8//zzVmZmplVfX299+OGH1u23324NHz7camtrsyzLsn784x9by5YtC23/9ttvW0OGDLEeffRRa/fu3daKFSusoUOHWu+9916y/gTPiPVcrly50nrttdesPXv2WDt27LBuvvlmKysry/rggw+S9Sd4wueffx76HJRkPfbYY9auXbus/fv3W5ZlWcuWLbN+/OMfh7b/61//amVnZ1tLly61du/eba1du9bKyMiwNm/enKw/wTNiPZe/+tWvrE2bNlnBYNB67733rLvvvtvy+/3WG2+8EdNxjQg6CxYssCSdcduyZUtoG0lWXV2dZVmW9cUXX1g//OEPrby8PGvo0KHWhRdeaC1atCj0AZDOYj2XlmUPMX/wwQet/Px8KzMz07r66qutlpaWxBfeQ44ePWrNmzfPOvfcc62cnBzrtttu6xcW9+7d2++8HjhwwLryyiut8847z8rMzLRKSkqspUuXWp2dnUn6C5Ln17/+tTV69Ghr2LBh1tSpU60//elPod/NnDnTWrBgQb/tN27caH33u9+1hg0bZl166aXWH//4xwSX2LtiOZeLFy8ObZufn29dc8011s6dO5NQam/pG+J8+q3v3C1YsMCaOXPmGftMmjTJGjZsmDV27Nh+n5fpLNZz+cgjj1gXXXSRlZWVZZ133nnWrFmzrDfffDPm4/osy7IGVY8EAADgUWk9jw4AADAbQQcAABiLoAMAAIxF0AEAAMYi6AAAAGMRdAAAgLEIOgAAwFgEHQAAYCyCDgAAMBZBBwAAGIugAwAAjPX/ALL0HF5cfRxiAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X, y = make_circles(n_samples=300, noise=0.1, factor=0.5, random_state=random_state)\n",
    "plt.scatter(X[y == 0, 0], X[y == 0, 1], c='blue', s=25, label='0')\n",
    "plt.scatter(X[y == 1, 0], X[y == 1, 1], c='red', s=25, label='1')\n",
    "plt.xlim((-1.5, 1.5))\n",
    "plt.ylim((-1.5, 1.5))\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 1, 2],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [2, 1, 0],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 0, 2],\n",
       "       [2, 1, 0],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [0, 2, 1],\n",
       "       [0, 1, 2],\n",
       "       [0, 2, 1],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 0, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 2, 0],\n",
       "       [1, 0, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [0, 2, 1],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [0, 1, 2],\n",
       "       [2, 1, 0],\n",
       "       [1, 0, 2],\n",
       "       [2, 0, 1],\n",
       "       [2, 0, 1],\n",
       "       [0, 1, 2],\n",
       "       [1, 2, 0],\n",
       "       [2, 1, 0],\n",
       "       [0, 1, 2],\n",
       "       [0, 2, 1],\n",
       "       [0, 2, 1],\n",
       "       [1, 0, 2],\n",
       "       [0, 2, 1],\n",
       "       [1, 0, 2],\n",
       "       [0, 2, 1],\n",
       "       [0, 1, 2],\n",
       "       [0, 2, 1],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 0, 2],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 2, 0],\n",
       "       [0, 1, 2],\n",
       "       [0, 2, 1],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [1, 0, 2],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [2, 0, 1],\n",
       "       [0, 1, 2],\n",
       "       [0, 2, 1],\n",
       "       [2, 1, 0],\n",
       "       [0, 1, 2],\n",
       "       [1, 0, 2],\n",
       "       [2, 0, 1],\n",
       "       [2, 0, 1],\n",
       "       [1, 0, 2],\n",
       "       [0, 2, 1],\n",
       "       [0, 1, 2],\n",
       "       [1, 2, 0],\n",
       "       [1, 2, 0],\n",
       "       [0, 1, 2],\n",
       "       [0, 1, 2],\n",
       "       [1, 2, 0]], dtype=int64)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.DataFrame(np.c_[X, y], columns=['x1', 'x2', 'y'])\n",
    "data.sort_values(by=['x1', 'x2', 'y'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "((240, 2), (60, 2))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)\n",
    "X_train.shape, X_test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = LogisticRegression(max_iter=1000, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "  系数: [[ 0.18605983 -0.03980644]]\n",
      "  截距: [0.0029855]\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.45      0.43      0.44        30\n",
      "           1       0.45      0.47      0.46        30\n",
      "\n",
      "    accuracy                           0.45        60\n",
      "   macro avg       0.45      0.45      0.45        60\n",
      "weighted avg       0.45      0.45      0.45        60\n",
      "\n",
      "F1: 0.45901639344262296\n"
     ]
    }
   ],
   "source": [
    "clf.fit(X_train, y_train)\n",
    "y_pred = clf.predict(X_test)\n",
    "print(f\"  系数: {clf.coef_}\")\n",
    "print(f\"  截距: {clf.intercept_}\")\n",
    "print(classification_report(y_test, y_pred))\n",
    "print('F1:', f1_score(y_test, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_results(X, y, model, title):\n",
    "    \"\"\"可视化决策边界\"\"\"\n",
    "    plt.figure(figsize=(10, 8))\n",
    "\n",
    "    # 创建网格点\n",
    "    h = 0.01\n",
    "    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n",
    "    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n",
    "    xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n",
    "                         np.arange(y_min, y_max, h))\n",
    "\n",
    "    # 预测网格点的类别\n",
    "    Z = model.predict(np.c_[xx.ravel(), yy.ravel()])\n",
    "    Z = Z.reshape(xx.shape)\n",
    "\n",
    "    # 绘制决策边界\n",
    "    plt.contourf(xx, yy, Z, alpha=0.8)\n",
    "    plt.contour(xx, yy, Z, levels=[0.5], linewidths=2, colors='black')\n",
    "\n",
    "    # 绘制数据点\n",
    "    plt.scatter(X[y == 0, 0], X[y == 0, 1], c='blue', s=25, label='0')\n",
    "    plt.scatter(X[y == 1, 0], X[y == 1, 1], c='red', s=25, label='1')\n",
    "\n",
    "    plt.title(title, fontsize=16)\n",
    "    plt.xlim((-1.5, 1.5))\n",
    "    plt.ylim((-1.5, 1.5))\n",
    "    plt.legend()\n",
    "\n",
    "    return plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'matplotlib.pyplot' from 'C:\\\\Users\\\\xuhao\\\\.conda\\\\envs\\\\ml\\\\lib\\\\site-packages\\\\matplotlib\\\\pyplot.py'>"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAKsCAYAAAAN/jfZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACpYElEQVR4nOzde3yU5Zk//s89IUAI5ICcEkYIeECQqAgGoaLWoAFbu1Zg2cSu6Fpt7be70LC1daH+trbUHpTFtoJL0aLVgALaql0DBaqoeAARnYKiOIkw4RQOSWAIkMzcvz9m8mSSzEzm8Jyfz/v10iEzyTx3Asp85rrv6xJSSgkiIiIiIiJKiMvoBRAREREREVkJQxQREREREVESGKKIiIiIiIiSwBBFRERERESUBIYoIiIiIiKiJDBEERERERERJYEhioiIiIiIKAkMUURERERERElgiCIiIiIiIkoCQxQREaWtqKgIQgjU1tbafg2vv/46hBC4/vrrNb0OERGZF0MUERFRBCEEhBBGL4OIiEysh9ELICIiUsOmTZvQ0tKCoUOHanqdkpISfPLJJ+jTp4+m1yEiIvNiiCIiIlu44IILdLlOnz59cMkll+hyLSIiMidu5yMiIs2cPn0av/zlL3HllVeiX79+6NOnDy699FIsXLgQJ06ciPl1b731FqZNm4a8vDz07dsXV111FZ555hkAsbfbxToT1djYiIULF6K4uBjZ2dno1asXCgsL8ZWvfAUPPvggWlpaAAD//d//3eF5267T9k/b83Z3JurEiRN46KGHMGHCBOTm5iIrKwsjR47EP//zP+O1115L4qdHRERmxUoUERFp4vjx4ygtLcXOnTuRk5ODG264AZmZmXjjjTewaNEiVFVVYfPmzSgqKurwdatXr8btt9+OYDCI4uJijB07FnV1dbjrrruwe/fupNZw+vRpXHPNNfjHP/6BgQMHorS0FNnZ2Th06BA+/fRTbN26FZWVlcjLy8MVV1yBOXPm4OmnnwYAzJkzp8Nz9e3bt9vrffTRR/ja176Guro65Obm4pprrkG/fv2wb98+vPrqqzhy5AimT5+e1PdARETmwxBFRESa+N73voedO3di4sSJ+Otf/4rzzjsPAHDq1CmlKnP77bfj7bffVr7mwIEDuOeeexAMBvHYY4/hP/7jP5THtmzZgptvvjmpNaxduxb/+Mc/MH36dPzlL39BZmam8lgwGMSbb76pnG269dZbceuttyohauXKlUldy+/345ZbbkFdXR3uuOMOPP744x2CV2NjI7Zt25bUcxIRkTlxOx8REalu3759WLNmDYQQWL58uRKggFBF5w9/+AN69+6NrVu3YuvWrcpjTz75JE6dOoVJkyZ1CFAAcO211+K+++5Lah2HDx8GANx4440dAhQAuFwuXHfddejZs2ey315UK1aswP79+3HFFVfgqaee6lK5ys3NxdSpU1W5FhERGYshioiIVLdlyxYEg0GMGzcOl112WZfHhw4dirKyMgDA3//+d+X+N954AwBw++23R33eWPfHctVVVwEAfv3rX+OZZ57B8ePHk/r6ZFRXVwMA7r77bmRkZGh2HSIiMh5DFBERqa6urg4AMGLEiJif09ZNr+1zAcDn8wFAl3NSbWLdH8v111+PH/3oRzhy5AjmzJmDAQMGYNSoUfi3f/s3/OUvf0EwGEzq+eL58ssvAYCd+4iIHIAhioiITCfWsNtUhuD+8pe/xBdffIHf/va3mDVrFvx+P/74xz/i1ltvxdVXXw2/35/ucomIyGEYooiISHVtA2+9Xm/Mz2l7LHI4btuvO7cpbxPr/u4UFRXh3//93/H888/D5/Ph/fffx8UXX4xt27bh17/+dUrP2dmwYcMAAJ9++qkqz0dERObFEEVERKq79tpr4XK5sHPnTnz00UddHj948KByhuirX/1qh68DgFWrVkV93qqqKlXWd9VVV+F73/seAGDnzp0dHmtrQNHa2prUc06bNg0A8NRTTyEQCKS/SCIiMi2GKCIiUt2wYcMwa9YsSCnxne98B8eOHVMe8/v9uPfee3HmzBlMnjwZkydPVh67++670adPH7z11lt4/PHHOzzn22+/jaVLlya1jpdeeklpchGppaVFCXHDhw/v8Jjb7QYA7Nq1K6lrffvb34bb7caHH36Ie+65p8s2waamJmzcuDGp5yQiInPinCgiItLE448/jk8//RTvvfceLrjgAnz1q19Fjx498MYbb6C+vh4jRozAc8891+Fr3G43/vd//xdz5szB97//fSxfvhyXXnopDhw4gDfffBOVlZV45JFHurQrj+WNN97AY489hgEDBmDcuHEYNGgQTp48iXfffRdHjhzB0KFDcf/993f4mhkzZuCRRx7B1KlTccMNN6Bfv34AgF/96lcdWrV31rdvX7z88su4+eab8cc//hEvvfQSvvKVr6Bv377Yv38/PvzwQ5SUlLDNORGRDTBEERGRJs477zxs3boVv/3tb/H8889jw4YNCAaDGDFiBO655x7853/+J/Lz87t83be+9S2cf/75WLRoEd577z3s3bsXl1xyCf7whz/gxhtvxCOPPIIBAwYktIY777wTWVlZeOutt7B792688cYbyM3NxbBhwzBv3jzce++9XYLRz372M7hcLrz44ov485//jHPnzgEAFi5cGDdEAcC4cePg8Xjw2GOP4S9/+Qtef/11BINBFBQU4Bvf+AbuuuuuBH96RERkZkJKKY1eBBERUSKeeeYZzJkzB7fccgtefvllo5dDREQOxTNRRERkKvv27cOhQ4e63P/222/jP//zPwGAFR0iIjIUt/MREZGpbN68GXfffTcuv/xyDBs2DBkZGfjiiy+ULn933XUXvvnNbxq8SiIicjJu5yMiIlP59NNP8cgjj+DNN9/E4cOH4ff7kZeXhyuuuAL/9m//hvLycqOXSEREDqdpiNqyZQt+85vf4IMPPsDBgwfx0ksv4dZbb435+a+//nqHeSFtDh48iCFDhmi1TCIiIiIiooRpeibK7/fj8ssv7zLrozt79uzBwYMHlX8GDRqk0QqJiIiIiIiSo+mZqOnTp2P69OlJf92gQYOQl5en/oKIiIiIiIjSZMrGEldccQXOnj2LsWPH4r//+7/xla98Jebnnj17FmfPnlU+DgaDOH78OM477zwIIfRYLhERERERmZCUEidPnkRhYSFcLvU24ZkqRBUUFOCJJ57AhAkTcPbsWaxYsQLXX3893nvvPVx55ZVRv+bhhx/GT3/6U51XSkREREREVrF//3643W7Vnk+37nxCiG4bS0Rz3XXXYdiwYfjTn/4U9fHOlajGxkYMGzYMd13/X+jZo3c6SyYiInKMuhNevPrBSuXj7/zHSHz7eyOh4hu3RES6O3WqFddd+ToaGhqQm5ur2vOaqhIVTUlJCd56662Yj/fq1Qu9evXqcn/PHr3RM5MhioiIKFnl9w5E5QOjjF4GEZFq1D7mY/r3l3bu3ImCggKjl0FEROQY2f1M//KAiMhQmlaiTp06hb179yof19TUYOfOnejfvz+GDRuGBx54AHV1dXjmmWcAAEuWLMGIESNw6aWX4syZM1ixYgU2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YcrNzXV7nXAfqz2Qn59/xXHA4XCopqbG0vPeECGqtbVVM2bM0IIFCyxtl56erlOnTrlumzZtclOFcLfu9MCrr76q119/XevXr1dhYaEGDBigtLQ0XbhwwY2Vwl1mz56t0tJS7dq1Sx9//LH27dun+fPn/+F28+bN63AcePXVV3uhWvSEDz74QE899ZSWLVumw4cPa/To0UpLS9Pp06c7Hf/ll19q1qxZmjt3roqKijR9+nRNnz5d3333XS9Xjp5itQckKTAwsMN7/sSJE71YMXrar7/+qtGjR2vdunVdGl9VVaVp06bp7rvvVnFxsbKzs/Xoo49q586dbq4U7mK1By4pLy/vcCwYNGiQtSc2N5ANGzaYoKCgLo3NzMw0GRkZbq0Hva+rPdDe3m7Cw8PNa6+95lpXX19vnE6n2bRpkxsrhDscPXrUSDJff/21a91nn31mHA6H+emnn6663aRJk8zChQt7oUK4Q0JCgnniiSdcy21tbSYyMtK8/PLLnY5/8MEHzbRp0zqsS0xMNI899phb64T7WO0BK78noO+RZLZt23bNMc8884wZMWJEh3UPPfSQSUtLc2Nl6C1d6YG9e/caSebs2bPX9Vw3xJmo7srPz9egQYMUFxenBQsWqK6uzu6S0EuqqqpUU1Oj1NRU17qgoCAlJiaqoKDAxsrQHQUFBQoODtaECRNc61JTU+Xl5aXCwsJrbvvee+8pJCREd911l5577jmdP3/e3eWiB7S2turQoUMd3sNeXl5KTU296nu4oKCgw3hJSktL4z3fR3WnBySpqalJUVFRGjx4sDIyMlRaWtob5cJDcBzAJWPGjFFERITuvfdeHThwwPL2/dxQU5+Qnp6uBx54QNHR0aqsrNSSJUt03333qaCgQN7e3naXBze79L3XsLCwDuvDwsIsfycW9qupqbniNHy/fv00cODAa/48H374YUVFRSkyMlJHjhzRs88+q/Lycm3dutXdJeM6/fLLL2pra+v0Pfz99993uk1NTQ3v+RtId3ogLi5O77zzjkaNGqWGhgatXr1aycnJKi0t1e23394bZcNmVzsOnDt3Ts3NzfLz87OpMvSWiIgIrV+/XhMmTFBLS4veeustTZ48WYWFhRo3blyX9+OxISonJ0erVq265piysjLFx8d3a/8zZ8503R85cqRGjRql2NhY5efnKyUlpVv7RM9ydw/A83W1B7rrX/9mauTIkYqIiFBKSooqKysVGxvb7f0C8ExJSUlKSkpyLScnJ+vOO+/Um2++qRUrVthYGYDeEhcXp7i4ONdycnKyKisrtXbtWr377rtd3o/HhqhFixYpKyvrmmNiYmJ67PliYmIUEhKiiooKQpSHcGcPhIeHS5Jqa2sVERHhWl9bW6sxY8Z0a5/oeV3tgfDw8Cv+kPzixYs6c+aM62fdFYmJiZKkiooKQpSHCwkJkbe3t2prazusr62tverPPDw83NJ4eLbu9MDl+vfvr7Fjx6qiosIdJcIDXe04EBgYyFmom1hCQoL2799vaRuPDVGhoaEKDQ3ttec7efKk6urqOvxCDXu5sweio6MVHh6uvLw8V2g6d+6cCgsLLc/yCPfpag8kJSWpvr5ehw4d0vjx4yVJe/bsUXt7uysYdUVxcbEkcRzoA3x8fDR+/Hjl5eVp+vTpkqT29nbl5eXpySef7HSbpKQk5eXlKTs727Vu165dHc5MoO/oTg9crq2tTSUlJZo6daobK4UnSUpKuuLSBhwHUFxcbP2z/7qmpfAQJ06cMEVFRWb58uUmICDAFBUVmaKiItPY2OgaExcXZ7Zu3WqMMaaxsdE8/fTTpqCgwFRVVZndu3ebcePGmeHDh5sLFy7Y9TJwHaz2gDHGvPLKKyY4ONjs2LHDHDlyxGRkZJjo6GjT3Nxsx0vAdUpPTzdjx441hYWFZv/+/Wb48OFm1qxZrsdPnjxp4uLiTGFhoTHGmIqKCvPiiy+ab775xlRVVZkdO3aYmJgYM3HiRLteAizavHmzcTqdJjc31xw9etTMnz/fBAcHm5qaGmOMMXPmzDE5OTmu8QcOHDD9+vUzq1evNmVlZWbZsmWmf//+pqSkxK6XgOtktQeWL19udu7caSorK82hQ4fMzJkzja+vryktLbXrJeA6NTY2uj7zJZk1a9aYoqIic+LECWOMMTk5OWbOnDmu8cePHzf+/v5m8eLFpqyszKxbt854e3ubzz//3K6XgOtktQfWrl1rtm/fbo4dO2ZKSkrMwoULjZeXl9m9e7el570hQlRmZqaRdMVt7969rjGSzIYNG4wxxpw/f95MmTLFhIaGmv79+5uoqCgzb94810EXfY/VHjDm92nOn3/+eRMWFmacTqdJSUkx5eXlvV88ekRdXZ2ZNWuWCQgIMIGBgeaRRx7pEKKrqqo69ER1dbWZOHGiGThwoHE6nWbYsGFm8eLFpqGhwaZXgO544403zJAhQ4yPj49JSEgwBw8edD02adIkk5mZ2WH8li1bzB133GF8fHzMiBEjzCeffNLLFaOnWemB7Oxs19iwsDAzdepUc/jwYRuqRk+5NF315bdLP/fMzEwzadKkK7YZM2aM8fHxMTExMR1+N0DfY7UHVq1aZWJjY42vr68ZOHCgmTx5stmzZ4/l53UYY8x1nf8CAAAAgJvITX2dKAAAAACwihAFAAAAABYQogAAAADAAkIUAAAAAFhAiAIAAAAACwhRAAAAAGABIQoAAAAALCBEAQAAAIAFhCgAAAAAsIAQBQAAAAAWEKIAAAAAwAJCFAAAAABY8H/pWypR6D/lMgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_results(X, y, clf, 'logistic')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "class AdditiveLR():\n",
    "    def __init__(self, n_models):\n",
    "        self.n_models = n_models\n",
    "\n",
    "    def fit(self, X, y):\n",
    "        # 训练多个基础模型\n",
    "        models = []\n",
    "        for _ in range(self.n_models):\n",
    "            # 添加一些随机扰动，使每个模型略有不同\n",
    "            model = LogisticRegression()\n",
    "            w = np.ones_like(y)\n",
    "            s = randint(0, len(y))\n",
    "            w[s:s + len(y) // self.n_models] = 0.0\n",
    "            model.fit(X, y, sample_weight=w)\n",
    "            models.append(model)\n",
    "        self.models = models\n",
    "        # 使用验证集优化权重\n",
    "        from scipy.optimize import minimize\n",
    "\n",
    "        def objective(weights):\n",
    "            self.weights = weights\n",
    "            probs = self.predict_prob(X)\n",
    "            predictions = (probs > 0.5).astype(int)\n",
    "            return -accuracy_score(y, predictions)  # 最小化负准确率 = 最大化准确率\n",
    "\n",
    "        # 初始权重均匀分布\n",
    "        initial_weights = np.random.rand(self.n_models)\n",
    "        # initial_weights = np.ones(self.n_models) / self.n_models\n",
    "\n",
    "        # 约束条件：所有权重之和为1\n",
    "        constraints = {'type': 'eq', 'fun': lambda w: np.sum(w) - 1}\n",
    "\n",
    "        # 边界条件：所有权重都在0和1之间\n",
    "        bounds = [(0, 1) for _ in range(self.n_models)]\n",
    "\n",
    "        # 优化权重\n",
    "        result = minimize(objective, initial_weights, method='SLSQP',\n",
    "                          constraints=constraints, bounds=bounds)\n",
    "        weights = result.x / np.sum(result.x)  # 确保权重和为1\n",
    "        self.weights = weights\n",
    "\n",
    "    def predict_prob(self, X):\n",
    "        weights = self.weights / np.sum(self.weights)  # 归一化\n",
    "        predictions = np.zeros(X.shape[0])\n",
    "\n",
    "        for i, model in enumerate(self.models):\n",
    "            proba = model.predict_proba(X)[:, 1]\n",
    "            predictions += weights[i] * proba\n",
    "        return predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "基础分类器系数和权重:\n",
      "分类器 1:\n",
      "  权重: 0.0250\n",
      "  系数: [[ 0.01380836 -0.00382973]]\n",
      "  截距: [4.88647857e-05]\n",
      "\n",
      "分类器 2:\n",
      "  权重: 0.0127\n",
      "  系数: [[ 0.01116663 -0.00310291]]\n",
      "  截距: [-6.41797441e-06]\n",
      "\n",
      "分类器 3:\n",
      "  权重: 0.0064\n",
      "  系数: [[ 0.00982678 -0.00272088]]\n",
      "  截距: [8.61283635e-06]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# 创建基础逻辑回归分类器\n",
    "base_estimator = LogisticRegression(\n",
    "    max_iter=10000,\n",
    "    # random_state=42,\n",
    "    solver='liblinear',  # 使用liblinear求解器确保正确处理样本权重\n",
    "    C=1.0,  # 正则化强度\n",
    "    class_weight='balanced'  # 平衡类别权重\n",
    ")\n",
    "\n",
    "# 创建并训练AdaBoost模型\n",
    "ada = AdaBoostClassifier(\n",
    "    base_estimator=base_estimator,\n",
    "    n_estimators=10,  # 增加分类器数量\n",
    "    learning_rate=0.5,  # 降低学习率，使权重调整更平滑\n",
    "    algorithm='SAMME',  # 使用SAMME算法，适合二分类问题\n",
    "    random_state=42\n",
    ")\n",
    "    \n",
    "ada.fit(X_train, y_train)\n",
    "# 打印每个基础分类器的系数和权重\n",
    "print(\"基础分类器系数和权重:\")\n",
    "for i, (clf, alpha) in enumerate(zip(ada.estimators_, ada.estimator_weights_)):\n",
    "    print(f\"分类器 {i + 1}:\")\n",
    "    print(f\"  权重: {alpha:.4f}\")\n",
    "    print(f\"  系数: {clf.coef_}\")\n",
    "    print(f\"  截距: {clf.intercept_}\")\n",
    "    print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.44      0.40      0.42        30\n",
      "           1       0.45      0.50      0.48        30\n",
      "\n",
      "    accuracy                           0.45        60\n",
      "   macro avg       0.45      0.45      0.45        60\n",
      "weighted avg       0.45      0.45      0.45        60\n",
      "\n",
      "F1: 0.47619047619047616\n"
     ]
    }
   ],
   "source": [
    "y_pred2 = ada.predict(X_test)\n",
    "print(classification_report(y_test, y_pred2))\n",
    "print('F1:', f1_score(y_test, y_pred2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "False\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "False\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "for x, y in zip(y_pred, y_pred2):\n",
    "    print(x == y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'matplotlib.pyplot' from 'C:\\\\Users\\\\xuhao\\\\.conda\\\\envs\\\\ml\\\\lib\\\\site-packages\\\\matplotlib\\\\pyplot.py'>"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAKsCAYAAAAN/jfZAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABbWUlEQVR4nO3deXyU9bn+8WuyEyAJS8gCIeyggmwKglawUgGtiju4sKiACwqCG7ZHq22Pp54udqEHe9qK2lprT6vtzyoWENwIYQ07IRuEAAlrVrLP8/vD+oWRgAnM5DvL5/165Xjfk5nMxemYeDFPnsflOI4jAAAAAECzhNkOAAAAAACBhBIFAAAAAC1AiQIAAACAFqBEAQAAAEALUKIAAAAAoAUoUQAAAADQApQoAAAAAGgBShQAAAAAtAAlCgAAAABagBIFAGgVq1atksvl0tixY73y9aZPny6Xy6UlS5Z45esBANBclCgAAPzE9773PblcLn3ve9+zHQUAcBaUKAAAAABoAUoUAAAAALQAJQoA0KS1a9fqySef1IgRI5ScnKyoqCglJSXp+uuv1/Lly8/4uNdff12XXnqpYmNj1bFjR02YMEGffvrpWZ/rb3/7m+6//34NHDhQHTp0UExMjHr27Kl7771X2dnZX5t18+bNuvnmm5WYmKg2bdro4osv1s9//nM1Njae8TFvvfWWrr76anXs2FHR0dFKT0/Xvffeq927d5/xMceOHdMzzzyjiy66SLGxsWrfvr2GDx+ul156SdXV1U0+Zvny5br++uuVlJSkyMhIdejQQX379tXdd9+tTz75xNzP5XLp+eeflyQ9//zzcrlc5mP69Olf+/8DAEDrcTmO49gOAQDwP+PGjdPKlSt10UUXKS0tTW3btlVeXp42btwoSXr55Zc1d+5cj8fMnTtXv/jFLxQWFqYrrrhCqamp2rJli3bt2qVHHnlEP//5zzVmzBitWrXK43ERERGKjo7WhRdeqO7du6uhoUHbtm1Tfn6+2rZtq3/9618aPXq0x2OmT5+u1157TQ8++KBeffVVJScna+TIkTp+/LhWrVqluro63XrrrXr77bflcrnM4xzH0fTp0/X6668rIiJCV155pbp06aKNGzdq9+7dio2N1V//+ldNmDDB4/ny8/P1zW9+U3v37lViYqKuvPJK1dfXa+XKlaqoqNCwYcO0fPlydejQwTzmtdde04wZMyRJI0aMUI8ePVRdXa2ioiJt3rxZc+bM0csvv2z+PFlZWdq8ebMGDx6sIUOGmK9zxRVX6P777z+n/x0BAD7gAADQhPfff985cODAabevXr3aiYuLcyIjI52ioiJz+3vvvedIctq2bet88sknHo/5z//8T0eSI8kZM2bMaV/zrbfeciorKz1uc7vdzqJFixxJzkUXXeS43W6Pz0+bNs18zYceesipr683n9u2bZuTmJjoSHIWL17s8bj/+Z//cSQ5nTt3djZt2uTxfM8995wjyUlISHAOHTrk8biRI0c6kpwbbrjBI+uhQ4ecYcOGOZKcO++80+MxPXv2dCQ5n3766Wl/5pKSEmfjxo0et335/M8999xp9wcA+A9KFACgxRYuXOhIchYtWmRuGzdunCPJeeqpp5p8zJAhQ85Yos5m1KhRjiRn+/btHrd/WaJSUlKc6urq0x73y1/+0pHk9O3b1+P23r17O5KcX/ziF6c9xu12OxdffLEjyfnhD39obv/0008dSU5sbKxTXFx82uPWr1/vSHLCwsKcffv2mdtjY2Od+Pj4Zv9ZKVEAEBgiWu89LwBAoDl69Kj++c9/atu2bTp+/Ljq6+slSTk5OZJkfl+poaFBn332mSTp7rvvbvJrTZ06VVlZWWd8rtzcXC1dulS5ubmqqKgwv89UUlJinuvCCy887XG33367YmJiTrt92rRpeuSRR5STk6MDBw4oNTVVRUVFysvLM5//KpfLpRkzZuixxx7TypUr9cwzz0iSOfxwwoQJSkpKOu1xw4cP1+DBg7V582Z9/PHHuuuuuyR9cQjfqlWrNHXqVM2dO1dDhw5VWBi/jgwAgY4SBQBo0v/+7//qscceU1VV1RnvU15eLumLslVTUyNJ6tmzZ5P3PdPtjY2NmjNnjl555RU5Z/k13S+fq7lft3379urUqZOOHj2qoqIipaamav/+/ZKkTp06KS4ursnH9e7dW5LMfU+dz/RcXz5u8+bNHo/79a9/rW9/+9t644039MYbb6h9+/a69NJL9c1vflP33HOPunfvfsavBwDwX/x1GADgNBs2bNDs2bNVW1urH/3oR9qxY4cqKyvldrvlOI5eeeUVSTpr6Wmun//851q8eLGSkpL05ptvas+ePaqurpbzxSHnmjJlynk/lzdynosLLrhA2dnZ+uc//6kF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0qVLy57YCSKvvvqqEx8f36z7Tps2zbnxxht9mgetr7mvAbfb7SQnJzv//d//bW4rLS11oqOjnT/96U8+TAhf2LFjhyPJWbdunbntgw8+cFwul7N///4zPm7MmDHO3LlzWyEhfGHEiBHOww8/bPbGxkYnNTXVefHFF5u8/+233+5cd911HreNHDnSmT17tk9zwnda+hpoyX8nIPBIct55552z3ufJJ590LrroIo/b7rjjDmf8+PE+TIbW0pzXwMqVKx1JzvHjx8/ruYLinahztWrVKnXp0kX9+/fXgw8+qKNHj9qOhFZSUFCg4uJijRs3ztwWHx+vkSNHKiMjw2IynIuMjAwlJCTokksuMbeNGzdOYWFhyszMPOtj//jHP6pz584aOHCgFi5cqBMnTvg6Lrygrq5OGzZs8Ph3OCwsTOPGjTvjv8MZGRke95ek8ePH8+98gDqX14AkVVZWKj09XWlpabrxxhu1ffv21ogLP8H3AXxpyJAhSklJ0be+9S19/vnnLX58hA8yBYQJEybo5ptvVs+ePZWXl6dnnnlGEydOVEZGhsLDw23Hg499edxrUlKSx+1JSUktPiYW9hUXF5/2NnxERIQ6dux41v8977zzTqWnpys1NVVbtmzRU089pezsbP3tb3/zdWScpyNHjqixsbHJf4d37drV5GOKi4v5dz6InMtroH///vr973+viy++WGVlZfrxj3+s0aNHa/v27erWrVtrxIZlZ/o+UF5erurqarVp08ZSMrSWlJQULV68WJdccolqa2v129/+VmPHjlVmZqaGDRvW7K/jtyXq6aef1o9+9KOz3mfnzp0aMGDAOX39yZMnm3nQoEG6+OKL1bt3b61atUpXX331OX1NeJevXwPwf819DZyrU39natCgQUpJSdHVV1+tvLw89e7d+5y/LgD/NGrUKI0aNcrso0eP1gUXXKBXXnlF3//+9y0mA9Ba+vfvr/79+5t99OjRysvL089+9jO98cYbzf46fluiFixYoOnTp5/1Pr169fLa8/Xq1UudO3dWbm4uJcpP+PI1kJycLEkqKSlRSkqKub2kpERDhgw5p68J72vuayA5Ofm0XyRvaGjQsWPHzP/WzTFy5EhJUm5uLiXKz3Xu3Fnh4eEqKSnxuL2kpOSM/5snJye36P7wb+fyGviqyMhIDR06VLm5ub6ICD90pu8DcXFxvAsVwkaMGKHPPvusRY/x2xKVmJioxMTEVnu+oqIiHT161OM/qGGXL18DPXv2VHJyslasWGFKU3l5uTIzM1t8lkf4TnNfA6NGjVJpaak2bNig4cOHS5I++ugjud1uU4yaIysrS5L4PhAAoqKiNHz4cK1YsUKTJk2SJLndbq1YsUJz5sxp8jGjRo3SihUrNG/ePHPbsmXLPN6ZQOA4l9fAVzU2Nmrr1q269tprfZgU/mTUqFGnXdqA7wPIyspq+c/+8zothZ/Yu3evs2nTJuf555932rVr52zatMnZtGmTU1FRYe7Tv39/529/+5vjOI5TUVHhPP74405GRoZTUFDgLF++3Bk2bJjTt29fp6amxtYfA+ehpa8Bx3Gc//qv/3ISEhKcv//9786WLVucG2+80enZs6dTXV1t44+A8zRhwgRn6NChTmZmpvPZZ585ffv2daZMmWI+X1RU5PTv39/JzMx0HMdxcnNznRdeeMFZv369U1BQ4Pz97393evXq5Vx55ZW2/ghoobfeesuJjo52lixZ4uzYscOZNWuWk5CQ4BQXFzuO4zj33HOP8/TTT5v7f/75505ERITz4x//2Nm5c6fz3HPPOZGRkc7WrVtt/RFwnlr6Gnj++eedDz/80MnLy3M2bNjgTJ482YmJiXG2b99u64+A81RRUWF+5ktyfvrTnzqbNm1y9u7d6ziO4zz99NPOPffcY+6fn5/vxMbGOk888YSzc+dOZ9GiRU54eLizdOlSW38EnKeWvgZ+9rOfOe+++66Tk5PjbN261Zk7d64TFhbmLF++vEXPGxQlatq0aY6k0z5Wrlxp7iPJefXVVx3HcZwTJ04411xzjZOYmOhERkY66enpzsyZM803XQSelr4GHOeL05z/x3/8h5OUlORER0c7V199tZOdnd364eEVR48edaZMmeK0a9fOiYuLc2bMmOFRogsKCjxeE4WFhc6VV17pdOzY0YmOjnb69OnjPPHEE05ZWZmlPwHOxS9/+Uune/fuTlRUlDNixAhnzZo15nNjxoxxpk2b5nH/t99+2+nXr58TFRXlXHTRRc4///nPVk4Mb2vJa2DevHnmvklJSc61117rbNy40UJqeMuXp6v+6seX/7tPmzbNGTNmzGmPGTJkiBMVFeX06tXL478NEHha+hr40Y9+5PTu3duJiYlxOnbs6IwdO9b56KOPWvy8LsdxnPN6/wsAAAAAQkhIXycKAAAAAFqKEgUAAAAALUCJAgAAAIAWoEQBAAAAQAtQogAAAACgBShRAAAAANAClCgAAAAAaAFKFAAAAAC0ACUKAAAAAFqAEgUAAAAALUCJAgAAAIAWoEQBAAAAQAv8f1BQhDM5Cf/6AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "visualize_results(X, y, ada, 'adaboost')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}